// Package types define the structure of request parameters and return results in this package
package types

import (
	"time"

	"github.com/zhufuyi/sponge/pkg/mysql/query"
)

var _ time.Time

type AuthReq struct {
	OpenID    string `json:"open_id" binding:"required"`
	UnionID   string `json:"union_id" binding:"required"`
	Phone     string `json:"phone"`
	AppID     string `json:"app_id" binding:"required"`
	Timestamp int64  `json:"timestamp"`
	NickName  string `json:"nick_name"`
	Avatar    string `json:"avatar"`
	Sex       int64  `json:"sex"`
	AdCode    string `json:"ad_code"`
}
type AuthReply struct {
	Id            int64    `json:"id"`
	OpenID        string   `json:"open_id"`
	UnionID       string   `json:"union_id"`
	Phone         string   `json:"phone"`
	EncryPhone    string   `json:"encry_phone"`
	AppID         string   `json:"app_id"`
	NickName      string   `json:"nick_name"`
	Avatar        string   `json:"avatar"`
	SearchHistory []string `json:"search_history"`
	Sex           int64    `json:"sex"`
	AccessToken   string   `json:"access_token"`
	Status        int64    `json:"status"`
}

// CreateTkMemberRequest create params
// todo fill in the binding rules https://github.com/go-playground/validator
type CreateTkMemberRequest struct {
	AppID          string `json:"app_id" binding:""`           // 小程序appid
	OpenID         string `json:"open_id" binding:""`          // 用户openid
	NickName       string `json:"nick_name" binding:""`        // 用户昵称
	Phone          string `json:"phone" binding:""`            // 手机号
	UnionID        string `json:"union_id" binding:""`         // unionId
	Avatar         string `json:"avatar" binding:""`           // 用户头像
	Sex            int    `json:"sex" binding:""`              // 性别，1：男。2：女，3：老年粉
	Source         int    `json:"source" binding:""`           // 用户来源 0：自然流量 1：广点通，4：磁力引擎
	OrderNum       int    `json:"order_num" binding:""`        // 下单数量
	OrderMoney     string `json:"order_money" binding:""`      // 订单金额
	LastOrderTime  int    `json:"last_order_time" binding:""`  // 最后一次下单时间
	FirstOrderTime int    `json:"first_order_time" binding:""` // 首次下单时间
	LastActiveTime int    `json:"last_active_time" binding:""` // 最后访问时间
	Type           int    `json:"type" binding:""`             // 1:正常用户，2：虚拟用户
	SearchHistory  string `json:"search_history" binding:""`   // 搜索历史 - json
	AuthorName     string `json:"author_name" binding:""`      // 创建人
	Status         int    `json:"status" binding:""`           // 状态:1=正常;-1=黑名单
	MemberID       string `json:"member_id" binding:""`        // 会员ID
}

// UpdateTkMemberByIDRequest update params
type UpdateTkMemberByIDRequest struct {
	ID uint64 `json:"id" binding:""` // uint64 id

	AppID          string `json:"app_id" binding:""`           // 小程序appid
	OpenID         string `json:"open_id" binding:""`          // 用户openid
	NickName       string `json:"nick_name" binding:""`        // 用户昵称
	Phone          string `json:"phone" binding:""`            // 手机号
	UnionID        string `json:"union_id" binding:""`         // unionId
	Avatar         string `json:"avatar" binding:""`           // 用户头像
	Sex            int    `json:"sex" binding:""`              // 性别，1：男。2：女，3：老年粉
	Source         int    `json:"source" binding:""`           // 用户来源 0：自然流量 1：广点通，4：磁力引擎
	OrderNum       int    `json:"order_num" binding:""`        // 下单数量
	OrderMoney     string `json:"order_money" binding:""`      // 订单金额
	LastOrderTime  int    `json:"last_order_time" binding:""`  // 最后一次下单时间
	FirstOrderTime int    `json:"first_order_time" binding:""` // 首次下单时间
	LastActiveTime int    `json:"last_active_time" binding:""` // 最后访问时间
	Type           int    `json:"type" binding:""`             // 1:正常用户，2：虚拟用户
	SearchHistory  string `json:"search_history" binding:""`   // 搜索历史 - json
	AuthorName     string `json:"author_name" binding:""`      // 创建人
	Status         int    `json:"status" binding:""`           // 状态:1=正常;-1=黑名单
	MemberID       string `json:"member_id" binding:""`        // 会员ID
}

// GetTkMemberByIDRespond respond detail
type GetTkMemberByIDRespond struct {
	ID string `json:"id"` // convert to string id

	AppID          string `json:"app_id"`           // 小程序appid
	OpenID         string `json:"open_id"`          // 用户openid
	NickName       string `json:"nick_name"`        // 用户昵称
	Phone          string `json:"phone"`            // 手机号
	UnionID        string `json:"union_id"`         // unionID
	Avatar         string `json:"avatar"`           // 用户头像
	Sex            int    `json:"sex"`              // 性别，1：男。2：女，3：老年粉
	Source         int    `json:"source"`           // 用户来源 0：自然流量 1：广点通，4：磁力引擎
	OrderNum       int    `json:"order_num"`        // 下单数量
	OrderMoney     string `json:"order_money"`      // 订单金额
	LastOrderTime  int    `json:"last_order_time"`  // 最后一次下单时间
	FirstOrderTime int    `json:"first_order_time"` // 首次下单时间
	LastActiveTime int    `json:"last_active_time"` // 最后访问时间
	Type           int    `json:"type"`             // 1:正常用户，2：虚拟用户
	SearchHistory  string `json:"search_history"`   // 搜索历史 - json
	AuthorName     string `json:"author_name"`      // 创建人
	CreatedAt      int    `json:"created_at"`       // 注册时间
	UpdatedAt      int    `json:"updated_at"`       // 更新时间
	Status         int    `json:"status"`           // 状态:1=正常;-1=黑名单
	MemberID       string `json:"member_id"`        // 会员ID
}

// DeleteTkMembersByIDsRequest request form ids
type DeleteTkMembersByIDsRequest struct {
	IDs []uint64 `json:"ids" binding:"min=1"` // id list
}

// GetTkMembersByIDsRequest request form ids
type GetTkMembersByIDsRequest struct {
	IDs []uint64 `json:"ids" binding:"min=1"` // id list
}

// GetTkMembersRequest request form params
type GetTkMembersRequest struct {
	query.Params // query parameters
}

// ListTkMembersRespond list data
type ListTkMembersRespond []struct {
	GetTkMemberByIDRespond
}
